In [80]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import pandas_datareader as dr
import datetime as dt

from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM
In [81]:
dataset_train = pd.read_csv('D:\HondaTrain.csv')
training_set = dataset_train.iloc[:, 4:5].values
In [82]:
dataset_train
Out[82]:
Date Open High Low Close Volume
0 2-Jan-17 677.00 698.00 677.00 681.42 138,650
1 3-Jan-17 683.00 697.25 675.00 681.22 211,450
2 4-Jan-17 681.53 696.67 681.53 688.57 206,200
3 5-Jan-17 688.00 712.00 688.00 707.58 570,650
4 6-Jan-17 709.00 714.00 695.01 697.03 292,700
... ... ... ... ... ... ...
1166 25-Aug-21 354.00 359.00 351.00 355.62 21,900
1167 26-Aug-21 357.65 357.65 344.00 346.39 52,100
1168 27-Aug-21 346.00 349.00 338.00 341.50 142,000
1169 30-Aug-21 345.00 345.00 341.00 341.78 41,800
1170 31-Aug-21 340.35 347.50 338.00 342.96 31,700

1171 rows × 6 columns

In [83]:
stock_price_train = dataset_train.iloc[:-60, 4:5].values
In [84]:
sc = MinMaxScaler(feature_range = (0, 1))
training_set_scaled = sc.fit_transform(training_set).reshape(-1,1)
In [85]:
X_train = []
y_train = []
for i in range(60, len(training_set_scaled)):
    X_train.append(training_set_scaled[i-60:i, 0])
    y_train.append(training_set_scaled[i, 0])
X_train, y_train = np.array(X_train), np.array(y_train)
In [86]:
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
In [87]:
regressor = Sequential()
regressor.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 1)))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50))
regressor.add(Dropout(0.2))
regressor.add(Dense(units = 1))
regressor.compile(optimizer = 'adam', loss = 'mean_squared_error')
regressor.fit(X_train, y_train, epochs = 100, batch_size = 32, verbose='auto')
Epoch 1/100
35/35 [==============================] - 12s 112ms/step - loss: 0.0221
Epoch 2/100
35/35 [==============================] - 4s 110ms/step - loss: 0.0051
Epoch 3/100
35/35 [==============================] - 4s 127ms/step - loss: 0.0044
Epoch 4/100
35/35 [==============================] - 4s 120ms/step - loss: 0.0039
Epoch 5/100
35/35 [==============================] - 5s 129ms/step - loss: 0.0040
Epoch 6/100
35/35 [==============================] - 4s 114ms/step - loss: 0.0033
Epoch 7/100
35/35 [==============================] - 4s 115ms/step - loss: 0.0034
Epoch 8/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0030
Epoch 9/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0029
Epoch 10/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0039
Epoch 11/100
35/35 [==============================] - 4s 119ms/step - loss: 0.0025
Epoch 12/100
35/35 [==============================] - 4s 116ms/step - loss: 0.0030
Epoch 13/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0029
Epoch 14/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0025
Epoch 15/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0025
Epoch 16/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0026
Epoch 17/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0026
Epoch 18/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0022
Epoch 19/100
35/35 [==============================] - 4s 113ms/step - loss: 0.0023
Epoch 20/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0019
Epoch 21/100
35/35 [==============================] - 4s 122ms/step - loss: 0.0019
Epoch 22/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0019
Epoch 23/100
35/35 [==============================] - 6s 168ms/step - loss: 0.0021
Epoch 24/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0023
Epoch 25/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0019
Epoch 26/100
35/35 [==============================] - 6s 168ms/step - loss: 0.0023
Epoch 27/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0020
Epoch 28/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0019
Epoch 29/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0020
Epoch 30/100
35/35 [==============================] - 4s 114ms/step - loss: 0.0019
Epoch 31/100
35/35 [==============================] - 6s 171ms/step - loss: 0.0018
Epoch 32/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0016
Epoch 33/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0015
Epoch 34/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0017
Epoch 35/100
35/35 [==============================] - 6s 167ms/step - loss: 0.0016
Epoch 36/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0018
Epoch 37/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0018
Epoch 38/100
35/35 [==============================] - 5s 132ms/step - loss: 0.0017
Epoch 39/100
35/35 [==============================] - 5s 147ms/step - loss: 0.0017
Epoch 40/100
35/35 [==============================] - 4s 114ms/step - loss: 0.0014
Epoch 41/100
35/35 [==============================] - 5s 146ms/step - loss: 0.0018
Epoch 42/100
35/35 [==============================] - 5s 127ms/step - loss: 0.0016
Epoch 43/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0014
Epoch 44/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0014
Epoch 45/100
35/35 [==============================] - 6s 169ms/step - loss: 0.0015
Epoch 46/100
35/35 [==============================] - 4s 119ms/step - loss: 0.0014
Epoch 47/100
35/35 [==============================] - 4s 125ms/step - loss: 0.0016
Epoch 48/100
35/35 [==============================] - 4s 124ms/step - loss: 0.0018
Epoch 49/100
35/35 [==============================] - 4s 123ms/step - loss: 0.0014
Epoch 50/100
35/35 [==============================] - 4s 120ms/step - loss: 0.0013
Epoch 51/100
35/35 [==============================] - 5s 144ms/step - loss: 0.0012
Epoch 52/100
35/35 [==============================] - 4s 127ms/step - loss: 0.0014
Epoch 53/100
35/35 [==============================] - 4s 125ms/step - loss: 0.0015
Epoch 54/100
35/35 [==============================] - 4s 122ms/step - loss: 0.0015
Epoch 55/100
35/35 [==============================] - 4s 119ms/step - loss: 0.0013
Epoch 56/100
35/35 [==============================] - 4s 119ms/step - loss: 0.0016
Epoch 57/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0015
Epoch 58/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0014
Epoch 59/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0013
Epoch 60/100
35/35 [==============================] - 4s 114ms/step - loss: 0.0012
Epoch 61/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0012
Epoch 62/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0014
Epoch 63/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0018
Epoch 64/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0014
Epoch 65/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0013
Epoch 66/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0011
Epoch 67/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0012
Epoch 68/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0012
Epoch 69/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0012
Epoch 70/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0012
Epoch 71/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0011
Epoch 72/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0011
Epoch 73/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 74/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0012
Epoch 75/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0012
Epoch 76/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0012
Epoch 77/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 78/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 79/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 80/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 81/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 82/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 83/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0012
Epoch 84/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0012
Epoch 85/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0010
Epoch 86/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0012
Epoch 87/100
35/35 [==============================] - 4s 112ms/step - loss: 9.4526e-04
Epoch 88/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 89/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0010
Epoch 90/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 91/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0011
Epoch 92/100
35/35 [==============================] - 4s 114ms/step - loss: 9.9489e-04
Epoch 93/100
35/35 [==============================] - 4s 111ms/step - loss: 9.9422e-04
Epoch 94/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 95/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0010
Epoch 96/100
35/35 [==============================] - 4s 112ms/step - loss: 0.0011
Epoch 97/100
35/35 [==============================] - 4s 111ms/step - loss: 8.8624e-04
Epoch 98/100
35/35 [==============================] - 4s 111ms/step - loss: 9.6800e-04
Epoch 99/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0011
Epoch 100/100
35/35 [==============================] - 4s 111ms/step - loss: 9.3273e-04
Out[87]:
<keras.callbacks.History at 0x22cfb974ee0>
In [88]:
history = regressor.fit(X_train, y_train, validation_split=0.33, epochs=150, batch_size=10, verbose=0)
In [89]:
# list all data in history
print(history.history.keys())
dict_keys(['loss', 'val_loss'])
In [90]:
# import matplotlib as plt
# # summarize history for accuracy
# plt.plot(history.history['accuracy'])
# plt.plot(history.history['val_accuracy'])
# plt.title('model accuracy')
# plt.ylabel('accuracy')
# plt.xlabel('epoch')
# plt.legend(['train', 'test'], loc='upper left')
# plt.show()
In [91]:
# summarize history for loss
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'],loc='upper right')
plt.grid()
plt.show()
In [92]:
dataset_test = pd.read_csv('D:/HondaTest.csv')
In [93]:
dataset_test.replace(' ','',inplace=True)
dataset_test = dataset_test.dropna()
In [94]:
data2 = dataset_test.iloc[:, 4:5].values
total_test = pd.concat((dataset_train['Close'], dataset_test['Close']), axis=0)
In [95]:
inputs = total_test[len(total_test) - len(dataset_test) - 60:].values
inputs = inputs.reshape(-1,1)
inputs = sc.transform(inputs)
In [96]:
X_test = []
for i in range(60, len(inputs)):
    X_test.append(inputs[i-60:i, 0])
X_test = np.array(X_test)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
predicted_stock_price = regressor.predict(X_test)
predicted_stock_price = sc.inverse_transform(predicted_stock_price)
In [97]:
predicted_stock_price_train = regressor.predict(X_train)
predicted_stock_price_train = sc.inverse_transform(predicted_stock_price_train)
predicted_stock_price_train.shape
Out[97]:
(1111, 1)
In [98]:
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(dataset_test['Close'], color = 'red', label = 'Real Honda Stock Price')
plt.plot(predicted_stock_price, color = 'blue', label = 'Predicted Honda Stock Price')
plt.title('Honda Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Honda Stock Price')
plt.legend()
plt.grid()
plt.show()
In [99]:
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
testScore =(mean_squared_error(dataset_test['Close'], predicted_stock_price))
print('Test Score: %.2f RMSE' % (testScore))
print('Test Score: %.2f MAE' % mean_absolute_error(dataset_test['Close'], predicted_stock_price))
print('Test Score: %.2f R2' % r2_score(dataset_test['Close'],predicted_stock_price))
Test Score: 54.06 RMSE
Test Score: 6.05 MAE
Test Score: 0.87 R2
In [100]:
print(mean_squared_error(stock_price_train, predicted_stock_price_train))
print(r2_score(stock_price_train, predicted_stock_price_train))
9660.048338125842
0.796674440432818
In [101]:
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(stock_price_train, color = 'red', label = 'Real Honda Stock Price')
plt.plot(predicted_stock_price_train, color = 'blue', label = 'Predicted Honda Stock Price')
plt.title('Honda Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Honda Stock Price')
plt.legend()
plt.grid()
plt.show()
In [102]:
real_data = [inputs[len(inputs) - 60:len(inputs + 1), 0]]
real_data = np.array(real_data)
real_data = np.reshape(real_data , (real_data.shape[0], real_data.shape[1], 1))
In [103]:
prediction = regressor.predict(real_data)
prediction = sc.inverse_transform(prediction)
print(f"Prediction : {prediction}")
Prediction : [[262.4062]]
In [104]:
regressor_30 = Sequential()
regressor_30.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 1)))
regressor_30.add(Dropout(0.2))
regressor_30.add(LSTM(units = 50, return_sequences = True))
regressor_30.add(Dropout(0.2))
regressor_30.add(LSTM(units = 50, return_sequences = True))
regressor_30.add(Dropout(0.2))
regressor_30.add(LSTM(units = 50))
regressor_30.add(Dropout(0.2))
regressor_30.add(Dense(units = 30))
regressor_30.compile(optimizer = 'adam', loss = 'mean_squared_error')
regressor_30.fit(X_train, y_train, epochs = 100, batch_size = 32, verbose='auto')
Epoch 1/100
35/35 [==============================] - 11s 112ms/step - loss: 0.0529
Epoch 2/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0105
Epoch 3/100
35/35 [==============================] - 4s 110ms/step - loss: 0.0088
Epoch 4/100
35/35 [==============================] - 4s 110ms/step - loss: 0.0072
Epoch 5/100
35/35 [==============================] - 4s 110ms/step - loss: 0.0070
Epoch 6/100
35/35 [==============================] - 4s 110ms/step - loss: 0.0057
Epoch 7/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0055
Epoch 8/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0046
Epoch 9/100
35/35 [==============================] - 4s 110ms/step - loss: 0.0047
Epoch 10/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0047
Epoch 11/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0042
Epoch 12/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0039
Epoch 13/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0038
Epoch 14/100
35/35 [==============================] - 4s 113ms/step - loss: 0.0032
Epoch 15/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0039
Epoch 16/100
35/35 [==============================] - 4s 114ms/step - loss: 0.0035
Epoch 17/100
35/35 [==============================] - 4s 111ms/step - loss: 0.0029
Epoch 18/100
35/35 [==============================] - 4s 116ms/step - loss: 0.0030
Epoch 19/100
35/35 [==============================] - 4s 118ms/step - loss: 0.0027
Epoch 20/100
35/35 [==============================] - 4s 118ms/step - loss: 0.0027
Epoch 21/100
35/35 [==============================] - 4s 113ms/step - loss: 0.0023
Epoch 22/100
35/35 [==============================] - 4s 117ms/step - loss: 0.0024
Epoch 23/100
35/35 [==============================] - 4s 121ms/step - loss: 0.0028
Epoch 24/100
35/35 [==============================] - 4s 118ms/step - loss: 0.0024
Epoch 25/100
35/35 [==============================] - 4s 120ms/step - loss: 0.0024
Epoch 26/100
35/35 [==============================] - 5s 143ms/step - loss: 0.0022
Epoch 27/100
35/35 [==============================] - 5s 146ms/step - loss: 0.0021
Epoch 28/100
35/35 [==============================] - 4s 113ms/step - loss: 0.0020
Epoch 29/100
35/35 [==============================] - 4s 122ms/step - loss: 0.0023
Epoch 30/100
35/35 [==============================] - 6s 171ms/step - loss: 0.0022
Epoch 31/100
35/35 [==============================] - 6s 172ms/step - loss: 0.0021
Epoch 32/100
35/35 [==============================] - 6s 175ms/step - loss: 0.0021
Epoch 33/100
35/35 [==============================] - 5s 149ms/step - loss: 0.0020
Epoch 34/100
35/35 [==============================] - 5s 153ms/step - loss: 0.0021
Epoch 35/100
35/35 [==============================] - 5s 150ms/step - loss: 0.0020
Epoch 36/100
35/35 [==============================] - 6s 177ms/step - loss: 0.0017
Epoch 37/100
35/35 [==============================] - 5s 151ms/step - loss: 0.0018
Epoch 38/100
35/35 [==============================] - 5s 148ms/step - loss: 0.0018
Epoch 39/100
35/35 [==============================] - 5s 157ms/step - loss: 0.0016
Epoch 40/100
35/35 [==============================] - 5s 150ms/step - loss: 0.0020
Epoch 41/100
35/35 [==============================] - 5s 154ms/step - loss: 0.0019
Epoch 42/100
35/35 [==============================] - 5s 152ms/step - loss: 0.0016
Epoch 43/100
35/35 [==============================] - 5s 150ms/step - loss: 0.0017 0s - loss: 0.00
Epoch 44/100
35/35 [==============================] - 5s 141ms/step - loss: 0.0018
Epoch 45/100
35/35 [==============================] - 5s 152ms/step - loss: 0.0016
Epoch 46/100
35/35 [==============================] - 6s 161ms/step - loss: 0.0014
Epoch 47/100
35/35 [==============================] - 6s 171ms/step - loss: 0.0015
Epoch 48/100
35/35 [==============================] - 7s 192ms/step - loss: 0.0017
Epoch 49/100
35/35 [==============================] - 6s 183ms/step - loss: 0.0015
Epoch 50/100
35/35 [==============================] - 6s 179ms/step - loss: 0.0016
Epoch 51/100
35/35 [==============================] - 6s 157ms/step - loss: 0.0019
Epoch 52/100
35/35 [==============================] - 5s 143ms/step - loss: 0.0014
Epoch 53/100
35/35 [==============================] - 6s 162ms/step - loss: 0.0015 1s - los
Epoch 54/100
35/35 [==============================] - 6s 161ms/step - loss: 0.0014
Epoch 55/100
35/35 [==============================] - 6s 164ms/step - loss: 0.0014
Epoch 56/100
35/35 [==============================] - 5s 147ms/step - loss: 0.0015
Epoch 57/100
35/35 [==============================] - 5s 149ms/step - loss: 0.0015
Epoch 58/100
35/35 [==============================] - 5s 151ms/step - loss: 0.0013
Epoch 59/100
35/35 [==============================] - 6s 164ms/step - loss: 0.0014
Epoch 60/100
35/35 [==============================] - 6s 166ms/step - loss: 0.0014
Epoch 61/100
35/35 [==============================] - 5s 142ms/step - loss: 0.0013
Epoch 62/100
35/35 [==============================] - 5s 149ms/step - loss: 0.0012
Epoch 63/100
35/35 [==============================] - 6s 159ms/step - loss: 0.0013
Epoch 64/100
35/35 [==============================] - 5s 156ms/step - loss: 0.0014
Epoch 65/100
35/35 [==============================] - 5s 149ms/step - loss: 0.0014
Epoch 66/100
35/35 [==============================] - 6s 162ms/step - loss: 0.0013
Epoch 67/100
35/35 [==============================] - 5s 151ms/step - loss: 0.0011
Epoch 68/100
35/35 [==============================] - 5s 144ms/step - loss: 0.0012
Epoch 69/100
35/35 [==============================] - 5s 143ms/step - loss: 9.5865e-04
Epoch 70/100
35/35 [==============================] - 5s 147ms/step - loss: 0.0013
Epoch 71/100
35/35 [==============================] - 5s 156ms/step - loss: 0.0012
Epoch 72/100
35/35 [==============================] - 5s 142ms/step - loss: 0.0013
Epoch 73/100
35/35 [==============================] - 5s 142ms/step - loss: 0.0014
Epoch 74/100
35/35 [==============================] - 5s 146ms/step - loss: 0.0012
Epoch 75/100
35/35 [==============================] - 6s 162ms/step - loss: 0.0015
Epoch 76/100
35/35 [==============================] - 6s 159ms/step - loss: 0.0011
Epoch 77/100
35/35 [==============================] - 6s 168ms/step - loss: 0.0012
Epoch 78/100
35/35 [==============================] - 8s 218ms/step - loss: 0.0010
Epoch 79/100
35/35 [==============================] - 7s 197ms/step - loss: 0.0012
Epoch 80/100
35/35 [==============================] - 7s 211ms/step - loss: 0.0011
Epoch 81/100
35/35 [==============================] - 7s 199ms/step - loss: 0.0010
Epoch 82/100
35/35 [==============================] - 5s 154ms/step - loss: 0.0013
Epoch 83/100
35/35 [==============================] - 5s 154ms/step - loss: 0.0011TA
Epoch 84/100
35/35 [==============================] - 5s 151ms/step - loss: 0.0011
Epoch 85/100
35/35 [==============================] - 5s 153ms/step - loss: 0.0010
Epoch 86/100
35/35 [==============================] - 5s 150ms/step - loss: 0.0012
Epoch 87/100
35/35 [==============================] - 6s 175ms/step - loss: 0.0011 1s - loss:
Epoch 88/100
35/35 [==============================] - 6s 170ms/step - loss: 0.0012
Epoch 89/100
35/35 [==============================] - 5s 140ms/step - loss: 0.0012
Epoch 90/100
35/35 [==============================] - 5s 136ms/step - loss: 0.0011
Epoch 91/100
35/35 [==============================] - 5s 141ms/step - loss: 0.0012
Epoch 92/100
35/35 [==============================] - 5s 153ms/step - loss: 9.7614e-04
Epoch 93/100
35/35 [==============================] - 5s 146ms/step - loss: 0.0010
Epoch 94/100
35/35 [==============================] - 5s 140ms/step - loss: 0.0010
Epoch 95/100
35/35 [==============================] - 5s 149ms/step - loss: 9.9676e-04
Epoch 96/100
35/35 [==============================] - 6s 175ms/step - loss: 0.0010
Epoch 97/100
35/35 [==============================] - 6s 161ms/step - loss: 0.0011
Epoch 98/100
35/35 [==============================] - 5s 155ms/step - loss: 8.2383e-04
Epoch 99/100
35/35 [==============================] - 5s 148ms/step - loss: 7.3881e-04
Epoch 100/100
35/35 [==============================] - 6s 167ms/step - loss: 9.2899e-04
Out[104]:
<keras.callbacks.History at 0x22c85cd3610>
In [105]:
real_data_30 = [inputs[len(inputs) - 60:len(inputs + 1), 0]]
real_data_30 = np.array(real_data_30)
real_data_30 = np.reshape(real_data_30 , (real_data_30.shape[0], real_data_30.shape[1], 1))
In [106]:
prediction_30 = regressor_30.predict(real_data_30)
prediction_30 = sc.inverse_transform(prediction_30)
print(f"Prediction : {prediction_30.transpose()}")
Prediction : [[271.627  ]
 [270.93002]
 [271.68033]
 [273.13712]
 [272.32645]
 [272.27213]
 [271.39792]
 [272.20276]
 [270.8643 ]
 [270.7189 ]
 [272.57486]
 [273.2172 ]
 [273.05685]
 [271.43213]
 [273.02393]
 [272.1273 ]
 [271.087  ]
 [272.81073]
 [272.1299 ]
 [273.1295 ]
 [271.21838]
 [273.57693]
 [271.74463]
 [271.69098]
 [272.14728]
 [271.59113]
 [271.8343 ]
 [272.73962]
 [272.02203]
 [271.84393]]
In [107]:
DataFrame = pd.DataFrame(prediction_30)
prediction  = DataFrame.T
Prediction_Total = pd.concat((dataset_test['Close'],prediction), axis=0,sort=True,ignore_index=True)
In [108]:
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(prediction, color = 'blue', label = 'Predicted Stock Price')
plt.title('Honda Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Honda Stock Price')
plt.legend()
plt.grid()
plt.show()
In [109]:
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(Prediction_Total, color = 'blue', label = 'Predicted Stock Price')
plt.plot(dataset_test['Close'], color = 'red',label='Real Stock Price')
plt.title('Honda Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Honda Stock Price')
plt.legend()
plt.grid()
plt.show()
In [110]:
regressor_30.summary()
Model: "sequential_6"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 lstm_24 (LSTM)              (None, 60, 50)            10400     
                                                                 
 dropout_24 (Dropout)        (None, 60, 50)            0         
                                                                 
 lstm_25 (LSTM)              (None, 60, 50)            20200     
                                                                 
 dropout_25 (Dropout)        (None, 60, 50)            0         
                                                                 
 lstm_26 (LSTM)              (None, 60, 50)            20200     
                                                                 
 dropout_26 (Dropout)        (None, 60, 50)            0         
                                                                 
 lstm_27 (LSTM)              (None, 50)                20200     
                                                                 
 dropout_27 (Dropout)        (None, 50)                0         
                                                                 
 dense_6 (Dense)             (None, 30)                1530      
                                                                 
=================================================================
Total params: 72,530
Trainable params: 72,530
Non-trainable params: 0
_________________________________________________________________
In [111]:
import cufflinks as cf
import plotly.graph_objects as go
from plotly.offline import iplot, init_notebook_mode
import matplotlib.pyplot as plt
In [112]:
cf.go_offline()
init_notebook_mode()
In [113]:
TICKER = "Honda"
dataset_train["Close"].plot(title=f"{TICKER}'s stock price",figsize=(20, 6),grid=True,xlabel='Time',ylabel='Price')
Out[113]:
<AxesSubplot:title={'center':"Honda's stock price"}, xlabel='Time', ylabel='Price'>
In [114]:
qf = cf.QuantFig(dataset_train, title="Honda's stock price in 2021", name='Honda')
qf.iplot()
In [115]:
fig = go.Figure(data=
    [go.Candlestick(x=dataset_train.index,
                    open=dataset_train["Open"],
                    high=dataset_train["High"],
                    low=dataset_train["Low"],
                    close=dataset_train["Close"])]
)

fig.update_layout(
    title=f"{TICKER}'s adjusted stock price",
    yaxis_title="Price ($)"
)

fig.show()
In [116]:
qf = cf.QuantFig(dataset_train, title="Honda's stock price in 2021", name='Honda')
qf.add_sma(periods=14, column='Close', color='purple')
qf.iplot()
In [117]:
qf = cf.QuantFig(dataset_train, title="Honda's stock price in 2021", name='Honda')
qf.add_sma([10, 50], width=2, color=['yellow', 'red'])
qf.iplot()
In [118]:
qf.add_rsi(periods=14, color='green')
qf.iplot()
In [119]:
qf.add_bollinger_bands(periods=20, boll_std=2 ,colors=['orange','grey'], fill=True)
qf.iplot()
In [120]:
qf.add_volume()
qf.iplot()
In [121]:
qf.add_macd()
qf.iplot()
In [ ]: